<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml">
    
    <f:metadata>
        <f:event type="preRenderView" listener="#{operacionBean.validarAcceso}"/>
    </f:metadata>
    
    <ui:define name="cabecera">
        <title>Gestión de operaciones</title>
        <link rel="shortcut icon" href="/resources/imagenes/favicon.ico" />
    </ui:define>
    
    <ui:define name="contenido">
        
        <center>
            <!-- Tabla de Operacion -->
            <p:panel id="operacionPnl"
                     styleClass="contenido"
                     header="Listado de operaciones">
                <h:form id="tablaOperacionFrm">
                    
                    <p:dataTable  
                        id="tablaOperacionDtb" 
                        value="#{operacionBean.listaEntidades}"  
                        var="operacion"
                        rowKey="#{operacion.codigooperacion}"
                        rows="10"
                        selectionMode="single"
                        paginator="true" 
                        paginatorPosition="bottom" 
                        resizableColumns="true"
                        emptyMessage="No hay registros disponibles.">
                        
                         <p:column headerText="Operación" 
                                  filterBy="#{operacion.nombre}" 
                                  sortBy="#{operacion.nombre}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                            <h:outputText value="#{operacion.nombre}" />
                        </p:column>
                        
                        <p:column headerText="Descripción" 
                                  filterBy="#{operacion.descripcion}" 
                                  sortBy="#{operacion.descripcion}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                            <h:outputText value="#{operacion.descripcion}" />
                        </p:column>
                        
                        <p:column headerText="Modificar"
                                  styleClass="columna"
                                  rendered="#{sesionBean.verificarPermiso('modificar','operacion')}">
                            <p:commandButton 
                                id="modificarBtn" 
                                title="Modificar" 
                                icon="ui-icon-pencil"
                                actionListener="#{operacionBean.prepararModificacion(operacion)}"
                                update=":guardarOperacionFrm:guardarOperacionPnl"
                                oncomplete="guardarOperacionWgt.show()">
                                <f:setPropertyActionListener 
                                    target="#{operacionBean.operacionActual}"
                                    value="ACTUALIZACION" />
                            </p:commandButton>
                        </p:column>                            
                        
                        <p:column headerText="Eliminar"
                                  styleClass="columna"
                                  rendered="#{sesionBean.verificarPermiso('eliminar','operacion')}">
                            <p:commandButton 
                                id="eliminarBtn"
                                title="Eliminar" 
                                actionListener="#{operacionBean.prepararEliminacion(operacion)}"
                                icon="ui-icon-trash"
                                update="@form" 
                                oncomplete="confirmacionWgt.show()"/>
                        </p:column>
                        
                        <f:facet name="footer">
                            <p:commandButton 
                                id="agregarBtn" 
                                value="Nueva Operación"
                                oncomplete="guardarOperacionWgt.show()"
                                actionListener="#{operacionBean.prepararAdicion}"
                                update=":guardarOperacionFrm:guardarOperacionPnl"
                                title="Agregar nuevo operacion"
                                icon="ui-icon-document" 
                                style="float:left; font-size: 110%"
                                rendered="#{sesionBean.verificarPermiso('agregar','operacion')}"/>
                        </f:facet>
                        
                    </p:dataTable>                   
                    
                </h:form>
            </p:panel>
        </center>
        
    </ui:define>
    
    <ui:define name="extra">
        
          <p:dialog id="guardarOperacionDlg" 
                  header="Datos de la Operación" 
                  widgetVar="guardarOperacionWgt" 
                  resizable="false"
                  modal="true"
                  closable="false"
                  draggable="false" 
                  style="font-size: 85%"
                  rendered="#{sesionBean.verificarPermiso('agregar','operacion') or
                              sesionBean.verificarPermiso('modificar','operacion')}">
            <h:form id="guardarOperacionFrm">
                
                <p:messages id="mensaje" 
                            globalOnly="true" 
                            redisplay="false"
                            autoUpdate="true"/>
                
                <h:panelGrid id="guardarOperacionPnl" 
                             columns="3" 
                             style="margin-bottom:10px; font-size: 85%">
                    
                    <h:outputLabel for="nombreoperacionTxt" 
                                   value="Nombre de la operación: "/>
                    <p:inputText id="nombreoperacionTxt" 
                                 title="Obligatorio" 
                                 value="#{operacionBean.entidad.nombre}">
                                 <f:attribute name="regex" 
                                              value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" 
                                              value="Solo caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip 
                             for="nombreoperacionTxt" 
                             showEvent="focus" 
                             hideEvent="blur" 
                             rendered="#{operacionBean.tieneErrores('guardarOperacionFrm:nombreoperacionTxt')}">
                                    <p:message id="nombreoperacionMsg" 
                                               for="nombreoperacionTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel>
                    
                    <h:outputLabel for="descripcionoperacionTxt" 
                                   value="Descripción de la operación: "/>
                    <p:inputText id="descripcionoperacionTxt" 
                                 title="Obligatorio" 
                                 value="#{operacionBean.entidad.descripcion}">
                                 <f:attribute name="regex" 
                                              value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" 
                                              value="Solo caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip 
                             for="descripcionoperacionTxt" 
                             showEvent="focus" 
                             hideEvent="blur" 
                             rendered="#{operacionBean.tieneErrores('guardarOperacionFrm:descripcionoperacionTxt')}">
                                    <p:message id="descripcionoperacionMsg" 
                                               for="descripcionoperacionTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel>                                                     
                </h:panelGrid>
                <p:separator  />
                <br/>
                <p:commandButton 
                    id="guardarBtn" 
                    actionListener="#{operacionBean.guardarEntidad}" 
                    style="float:right; font-size: 85%"
                    oncomplete="if ( !args.validationFailed ) 
                        guardarOperacionWgt.hide()" 
                    update="@form,:tablaOperacionFrm:tablaOperacionDtb" 
                    value="Guardar" 
                    title="Guardar los datos"
                    icon="ui-icon-disk"/>
                <p:commandButton 
                    value="Cancelar" 
                    actionListener="#{operacionBean.revertirCambios}" 
                    onclick="guardarOperacionWgt.hide()"
                    icon="ui-icon-cancel" 
                    title="Cerrar la ventana"
                    immediate="true"
                    style="float:right; font-size: 85%"/>
            </h:form>
        </p:dialog>      
        
        <!-- Diálogo de confirmación de eliminación -->
        <p:confirmDialog id="confirmacionDlg" 
                         message="¿Está seguro que desea eliminar éste registro?" 
                         header="Eliminar Operación" 
                         widgetVar="confirmacionWgt" 
                         severity="alert"
                         width="300"
                         closable="false"
                         style="font-size: 85%"
                         rendered="#{sesionBean.verificarPermiso('eliminar','operacion')}">
            <h:form>
            <p:messages 
             id="mensajesMsg" 
             globalOnly="true" />
            
            
            <p:commandButton value="Eliminar"
                             actionListener="#{operacionBean.eliminarEntidad}"
                             icon="ui-icon-trash" 
                             title="Confirmar eliminación"
                             style="float:right; font-size: 85%"
                             update="@form,:tablaOperacionFrm:tablaOperacionDtb"
                             oncomplete="if ( !args.validationFailed ) confirmacionWgt.hide()"/>
            <p:commandButton value="Cancelar"
                             update="@form"
                             oncomplete="confirmacionWgt.hide()" 
                             icon="ui-icon-cancel" 
                             title="Cancelar eliminación"
                             style="float:right; font-size: 85%">
                <f:setPropertyActionListener 
                    target="#{operacionBean.operacionActual}" 
                    value="NINGUNA" />
            </p:commandButton>
            
            </h:form>
        </p:confirmDialog>

    </ui:define>
</ui:composition>

